2012/10/04

GeoHashが米国特許6,552,670(通称 BINGEO)に引っかかってるかもしれない

「元ここギコ!」さんのFacebook書込みに触発されて、GeoHash の仕様が掲載されているWikipediaのページを久しぶりにじっくり見てみた。

GeoHashとは、緯度経度の位置情報を表すコードで、短い文字列で場所を表すことができるため、Twitterのジオタグなどに使われてることが多い。

この種の位置情報コードは、現在私が把握しているだけで全世界に24種類ある。私自身も位置情報コードを発明して特許を取ったことがある。(このブログのタイトル「ロカポ」はその位置情報コードの名前。現在はロカポv2にあたる LP-Address を無償公開)。それ以来、位置情報コードの情報は常に収集していて、「位置情報コード百科 - GEOCODE Encyclopedia」というドキュメントをつくったり、大学で論文として発表したりしている。

で、本題に戻ると、GeoHashのエンコーディングの手順が、アメリカ特許の US6,552,670 (「Location encoder」 by Sundaravel; Vale (Framingham, MA), Paul; Benjamin J. (Winchester, MA) 、Switchboard Incorporated (Westborough, MA)、2001年出願、2003年成立)に記述されている内容とほぼ同じ、ということに気がついた。

この特許は「BINGEO」という名称で、位置情報をバイナリコード化する、という特許だ。

ものすごく簡略化していうと、BINGEOはあるエリアを上下左右に四分割し、0,1,2,3,と番号を振る。それを 00,01,10,11というように2桁の2進数で表す。分割されたエリアはさらに四分割し、それぞれに2桁の2進数が追加される。元が00の領域を分割すれば、 0000,0001,0010,0011に分割される。こうして、必要な精度まで分割していく。つまり、2ビットを1つの単位をして、エリアがどんどん四分割されていくことになる。結果的にできあがった2進数は緯度方向を表すビットと、経度方向を表すビットが交互に並ぶことになる。スイッチボードという会社の発明で、位置情報を2進数にしておいて論理演算する仕組みまで明細にある。


さて、GeoHash。

こちらは緯度と経度をそれぞれ別々に二分割、二分割として0か1を割り当てる。ここまでは良い。これを「前方一致検索」で使いたいという意図と思うが、偶数ビットを経度、基数ビットが緯度となるように、上位桁から交互に並べていく。組み合わせてできあがった二進数文字列(長さは倍になっている)は、細かい差異を無視すれば、BINGEOで作ったものと全く同じものとなってしまう。

GeoHashはこれをさらに5ビットの倍数になるような精度に調整し、5ビットごとに0-31の値にし、それに文字を割り当てている。違うのはこの最後の部分だけ。


BINGEOは「最適な使用例」に出てくるのは前述したコードだが、特許明細の請求項を見てみると請求項が93もあり、ありとあらゆる派生物まで範囲に入れようとしているように見える。
メインの請求項はこれ。US-Patentの簡易検索で「BINGEO 」のキーワードで一発で出てくる。
What is claimed is:
1. A method of forming a binary representation of geographic information based on a coordinate system, the method comprising, relating the geographic information to the coordinate system, providing a hierarchical segmentation scheme to create subdivisions based on the geographic information, assigning a binary code to the subdivisions, determining a level of the hierarchical scheme to provide a desired precision for the binary representation, forming the binary representation based on the assigned binary codes and the desired precision.



つまり、請求項をめちゃめちゃ広く取っている上に、従属項も多岐に渡るので、けっこう多くの「位置情報をコード化したもの」が引っかかる可能性がある。先ほど、ここギコ!さんに「MicrosoftのQuadKeyは4進数を使っているのでぎりぎりセーフかも」と言ったのですが、これも結構微妙かも。

GeoHash自体はパブリックドメインとなっていて、利用は自由だ。ただ、万一GeoHashの計算そのものがこの特許に触れていると、(米国で、と前置きになるが)GepHashを使って「業を営む」際には特許権侵害のリスクがあると思う。
私では専門的な判断は下せないが、調べた限りではかなりグレーっぽい。
どなたか弁理士の先生か、知財の専門家の方にご意見伺いたいところです。

GeoHashは位置情報コードの中では、かなり広く使われている方なので、もし権利関係で問題あれば影響大きそうです。。。



最後に少し宣伝。
さて、位置情報コードは前述したようにいろいろなものがあり、用途によって何が最適かは全然違ってきます。コードが必要でどんなコードが最適か迷ったときは是非ご相談ください。
こんなマニアックなお金にならない研究をしてるのは私しか居ないです(笑)
独自のコード開発もしています。
・商品属性など緯度経度以外の情報もコードに含めたい
・緯度経度を暗号化したいがコード化したまま空間検索もしたい
・緯度経度を使うと他社の特許に引っかかるのでコードを使って回避したい
など、なんでも気軽にご相談ください。